我们已经讨论了数据绑定和验证。根据验证错误输出信息是我们最后需要讨论的事情。上面的例子,我们已经拒绝了nameage字段。如果我们希望通过MessageSource输出错误信息,我们将会使用我们在拒绝字段时(这里是nameage)给出的错误信息。当你调用(无论是直接的,或是间接的,比如ValidationUtils类)rejectValue或是其他来自Errors接口的方法,底层的实现不仅会注册你传入的错误代码,而且还有一些其他的错误代码。MessageCodesResolver决定了使用哪些注册的错误代码。默认的,会使用DefualtMessageCodesResolver,它不仅会使用你给的消息代码,还会包含你传递给拒绝方法的字段名。因此,当你使用rejectValue("age", "too.darn.old"),除了too.darn.old代码外,Spring还会注册too.darn.old.agetoo.darn.old.age.int(第一个包括了字段名称,第二个还包括了字段的类型);这是为了开发人员方便快捷的定位错误信息等。
更多关于MessageCodeResolver和默认策略的信息可以分别在MessageCodesResolversDefualtMessageCodesResolver的文档中直接被找到。